#include "util.hpp"
#include <memory>
#include "Config .hpp"
#include "data.hpp"
#include"Hot.hpp"
#include"Service.hpp"
#include<thread>
cloud::DataManager *_data;
// void test(const std::string &str)
// {
    // cloud::FileUtil fl(str);
    // std::cout<<fl.LastAtime()<<std::endl;
    // std::string res;
    // fl.GetContent(&res);

    // fl.SetContent(res);
    // fl.CreateDir();
    // fl.Compress("hello.text");
    // const char *name ="小明";
    // int age = 18;
    // float score[] = {88.5, 98, 58};
    // Json::Value val;

    // val["姓名"] = name;
    // val["年龄"] = age;
    // val["成绩"].append(score[0]);
    // val["成绩"].append(score[1]);
    // val["成绩"].append(score[2]);

    // std::string data;

    // cloud::JsonFile::Serialize(val,&data);

    // std::cout<<data<<std::endl;
    // // Json::Value root;
    // // cloud::JsonFile::UnSerialize(data,&root);
    // // std::cout<<root["姓名"]<<std::endl;
    //     Json::StreamWriterBuilder swb;
    //     std::unique_ptr<Json::StreamWriter> sw(swb.newStreamWriter());

    //  std::ostringstream os;
    //  sw->write(val, &os);
    //  std::string data = os.str();
    //  std::cout << data <<std::endl;
//     return;
// }
// void test2()
// {
//     // cloud::Config* config=cloud::Config::GetInstance();
//     // std::cout<<config->GetHotTime()<<config->GetServerIp()<<std::endl;
//     cloud::BackupInfo example("./data.hpp");

//     cloud::DataManager dm;
//     // dm.Insert(example);
//     std::vector<cloud::BackupInfo> arr;
//     dm.GetAll(&arr);
//     for (auto &a : arr)
//     {
//         std::cout << a._atime << std::endl;
//         std::cout << a._fsize << std::endl;
//         std::cout << a._mtime << std::endl;
//         std::cout << a._pack_flag << std::endl;
//         std::cout << a._pack_path << std::endl;
//         std::cout << a._real_path << std::endl;
//         std::cout << a._url << std::endl;
//     }
// }

void hot_test()
{
    
    cloud::HotManeger hm;
    hm.Run();
}
void server_test()
{
    cloud::Service sv;
    sv.Run();
    
}
int main(int argc, char *argv[])
{
    _data= new cloud::DataManager;
    // cloud::DataManager *_data= new cloud::DataManager;
    // test(argv[0]);
    std::thread hot_manager(hot_test);
    std::thread server(server_test);

    hot_manager.join();
    server.join();
    //server_test();

    return 0;
}
